package com.gd.iot.energy.service.systemadmin;

import com.baomidou.mybatisplus.extension.service.IService;
import com.gd.iot.energy.po.systemadmin.AreaOrganizationPO;
import com.gd.iot.energy.pojo.common.vo.PageVO;
import com.gd.iot.energy.pojo.systemadmin.dto.AreaOrganizationSaveDTO;
import com.gd.iot.energy.pojo.systemadmin.dto.MetermodelSaveDTO;
import com.gd.iot.energy.pojo.systemadmin.vo.AreaOrganizationPageVO;
import com.gd.iot.energy.pojo.systemadmin.vo.AreaOrganizationVO;
import com.gd.iot.energy.pojo.systemadmin.vo.EnumVO;
import com.gd.iot.energy.pojo.systemadmin.vo.MetermodelPageVO;

import java.util.List;
import java.util.Map;

/**
 * 区域
 *
 * @author kris
 * @date Created at 8:33 下午 2020/8/5
 */
public interface AreaOrganizationService extends IService<AreaOrganizationPO> {

    /**
     * 获取所有区域
     * @return
     */
    List<AreaOrganizationVO> getAreaOrganizationVOs();

    /**
     * 获取指定节点所有子节点
     * @param areaId
     * @return
     */
    List<Long> getAllChildAreaIds(Integer areaId);

    /**
     * 获取区域名称
     * @param areaIds
     * @return
     */
    Map<Long, String> getAreaNamesById(List<Long> areaIds);

    /**
     * 获取分页数据
     * @param areaSerialnumber
     * @param name
     * @param pageSize
     * @param pageNo
     * @param orderColumn
     * @param orderType
     * @return
     */
    PageVO<AreaOrganizationPageVO> getAreaOrganizationPageVOs(String areaSerialnumber, String name, Integer pageSize,
                                                        Integer pageNo, String orderColumn, String orderType);

    /**
     * 新增表计
     * @param areaOrganizationSaveDTO
     * @return
     */
    Long add(AreaOrganizationSaveDTO areaOrganizationSaveDTO);

    /**
     * 更新表计
     * @param areaOrganizationSaveDTO
     * @return
     */
    boolean update(AreaOrganizationSaveDTO areaOrganizationSaveDTO);

    /**
     * 删除表计
     * @param ids
     * @return
     */
    boolean delete(List<Integer> ids);

    /**
     * 根据id获取表计
     * @param id
     * @return
     */
    AreaOrganizationSaveDTO getAreaOrganization(Integer id);

    /**
     * 获取相关枚举
     * @return
     */
    Map<String, List<EnumVO>> getEnums();
}
